package busco

import "wails/schema/enums/busenum"

// 只作用于角色主体
// 场景：在线奖励
// 场景：离线奖励
// 场景：按照挂机挂机获得奖励的寻宝功能
// @schema_export --ident=schema --json --config=功能
// @schema_go
// @cache_go
// @cache_ts
// @alias 功能_挂机
type B功能_挂机 struct {
	B功能
	// @alias 挂机奖励标旗
	G挂机奖励标旗 map[G挂机标旗]bool
	// @alias 开启消耗
	K开启消耗 string `link:"消费"`
	// @alias 计算方式
	J计算方式 busenum.S时间统计方式
	// 场景：离线挂机超过指定时间的部分，不给与奖励
	// @alias 最大累计时长
	Z最大累计时长 int
	// 场景《咸鱼之王》可以提升挂机等级，从而提升挂机奖励
	// @alias 最大奖励等级
	Z最大奖励等级 int
	// 提升奖励等级的消耗
	// 如果要实现阶梯式的消耗，使用配置修正
	// @alias 升级消耗
	S升级消耗 string `link:"消费"`
	// 按照挂机时长给与奖励
	// @alias 时长奖励集
	S时长奖励集 map[string]*S挂机时长奖励项
	// @alias 奖励模式
	S奖励模式 S挂机奖励模式
	// @alias 重置时间
	C重置时间 string
}

// @schema_go --EnumToString=true
// @alias 挂机奖励标旗
type G挂机标旗 int

const (
	// 当奖励关系为[连续]时生效
	// 领取一个奖励后，重新开始计算累计时间后，才能领取下一个奖励
	G挂机标旗_领取奖励重置时间 G挂机标旗 = iota
	// 场景：在线奖励
	G挂机标旗_每天重置
)

type S挂机时长奖励项 struct {
	// @alias 时长
	S时长 int
	// @alias 奖励
	J奖励 string `link:"奖励"`
}

// @schema_go
// @alias 挂机重置方式
type G挂机重置方式 int

const (
	G挂机重置方式_自动 G挂机重置方式 = iota
	// 需要设置[重置时间]
	G挂机重置方式_定时重置
	G挂机重置方式_领取奖励后
)

// @schema_go
// @alias 挂机奖励关系
type S挂机奖励模式 int

const (
	// 领取前一个奖励，才能领取下一个奖励
	S挂机奖励模式_连续 S挂机奖励模式 = iota
	// 只要达到时长就可以领取
	// 场景：在线奖励，累计时间5分钟，10分钟，有不同的奖励
	S挂机奖励模式_并列
	// 只能领取一次奖励
	// 场景：累计时间越长，获得的奖励越丰富，但只能领取一次奖励
	S挂机奖励模式_唯一
)
